#ifndef USART_H
#define USART_H

#include "stdint.h"

#define U0_RXBUFF_SIZE          2048    //串口0接收缓冲区大小
#define U0_SINGLERX_LEN_MAX     256     //串口0单次接收最大数据长度 
#define U0_RX_CTROL_BUFF_SIZE   10


//用来描述单次接收 数据存放在缓冲区的起始位置和结束位置
typedef struct{
    uint8_t *start;
    uint8_t *end;
}U0_RXBUFF_POSI;     


typedef struct{
    uint16_t u0RxCounter;   //统计当前数据接收累加总和
    U0_RXBUFF_POSI u0RxDataPtr[U0_RX_CTROL_BUFF_SIZE];   //数组每个成员代表单次接收
    U0_RXBUFF_POSI *u0RxDataIn;     //串口接收到未来得及处理数据
    U0_RXBUFF_POSI u0RxDataOut;     //串口接收到已经出来的数据
    U0_RXBUFF_POSI u0RxDataEnd;
}U0_RX_CTRL;


void uart0_init(uint32_t bandrate);
void dma0_init(void);

#endif /* USART_H */
